package com.ruoyi.common.utils.ps2;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class EditTypeValidator {
    // 定义有效分类集合
    private static final Set<String> VALID_EDIT_TYPES = new HashSet<>(Arrays.asList(
            "增加",
            "增加文字",
            "删除",
            "删除文字或水印",
            "替换",
            "替换文字",
            "颜色变换",
            "动作变换（与物体交互）",
            "材质变换",
            "纹理，文字变换",
            "形态变换（动植物， 人物外观变换）",
            "服饰变换",
            "数量变换",
            "大小变换",
            "人脸相关变换",
            "背景变换",
            "环境，色调变换（时间， 季节）",
            "主体位置",
            "图像一致性保持",
            "材质一致性保持"
    ));

    public static void main(String[] args) {
        // 替换为你的Excel文件路径
        String filePath = "J:\\BaiduNetdiskDownload\\新统计\\总图\\只待合并1"
                +"\\metadata.xlsx";

        try (FileInputStream fis = new FileInputStream(filePath);
             Workbook workbook = new XSSFWorkbook(fis)) {

            // 获取第一个工作表
            Sheet sheet = workbook.getSheetAt(0);

            // 遍历所有行（跳过标题行）
            for (int rowIndex = 1; rowIndex <= sheet.getLastRowNum(); rowIndex++) {
                Row row = sheet.getRow(rowIndex);
                if (row == null) continue;  // 跳过空行

                // 获取A列（文件名）和C列（分类）
                Cell fileNameCell = row.getCell(0); // A列
                Cell categoryCell = row.getCell(3); // C列

                if (fileNameCell == null ||fileNameCell .getStringCellValue()==""|| categoryCell == null) continue; // 跳过有空数据的行

                // 获取单元格值
                String fileName = getCellValueAsString(fileNameCell);
                String category = getCellValueAsString(categoryCell).trim();

                // 检查分类是否有效
                if (!VALID_EDIT_TYPES.contains(category)) {
                    // 输出无效分类信息
                    System.out.println("文件名: " + fileName + ", 无效分类: " + category);
                }
            }
            System.out.println("分类匹配完成");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 将单元格内容转为字符串
    private static String getCellValueAsString(Cell cell) {
        return switch (cell.getCellType()) {
            case STRING -> cell.getStringCellValue();
            case NUMERIC -> String.valueOf((int) cell.getNumericCellValue());
            case BOOLEAN -> String.valueOf(cell.getBooleanCellValue());
            case FORMULA -> cell.getCellFormula();
            default -> "";
        };
    }
}
